package cn.zyq.ykb.service.msg;

import cn.zyq.ykb.beans.admin.Admin;
import cn.zyq.ykb.beans.msg.Msg;
import cn.zyq.ykb.beans.sys.SysAdmin;
import cn.zyq.ykb.beans.user.User;
import cn.zyq.ykb.system.common.PageParam;
import cn.zyq.ykb.system.enums.MsgTypeEnum;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface MsgService {
    PageInfo<Msg> list(PageParam pageParam, Admin admin);

    void add(Msg param, Admin admin);

    void update(Msg param, Admin admin);

    void del(String serviceID, Admin admin);

    Msg detail(String serviceID, Admin admin);

    Msg detail(String serviceID);

    /**
     * 向指定用户发送消息
     *
     * @param content     消息内容
     * @param serviceID   关联的业务ID
     * @param userID      接收用户ID
     * @param msgTypeEnum 消息类型枚举
     * @param loginUser   登录用户
     */
    void sendMsg(String content, String serviceID, Integer userID, MsgTypeEnum msgTypeEnum, User loginUser);

    /**
     * 向指定用户发送消息
     *
     * @param content     消息内容
     * @param serviceID   关联的业务ID
     * @param userID      接收用户ID
     * @param msgTypeEnum 消息类型枚举
     * @param admin       登录用户
     */
    void sendMsg(String content, String serviceID, Integer userID, MsgTypeEnum msgTypeEnum, SysAdmin admin);

    /**
     * 消息列表
     *
     * @param pageParam
     * @param loginUser
     * @return
     */
    PageInfo<Msg> h5List(PageParam pageParam, User loginUser);

    /**
     * 用户未读消息分类统计
     *
     * @param loginUser
     * @return
     */
    List<Map> statistics(User loginUser);

    /**
     * 移动端获取消息
     *
     * @param serviceID
     * @param loginUser
     * @return
     */
    Msg h5Detail(String serviceID, User loginUser);
}
